package com.raymond.util;

import cn.hutool.core.util.RandomUtil;

import java.util.Arrays;
import java.util.List;

/**
 * desc-随机生成中文姓名工具类
 *
 * @author houmenghe
 * @date 2025/04/22 16:21
 **/
public class ChineseNameGenerator {

    // 常见百家姓（前100个）
    private static final List<String> LASTNAMES = Arrays.asList(
            "李", "王", "张", "刘", "陈", "杨", "赵", "黄", "周", "吴",
            "徐", "孙", "胡", "朱", "高", "林", "何", "郭", "马", "罗",
            "梁", "宋", "郑", "谢", "韩", "唐", "冯", "于", "董", "萧",
            "程", "曹", "袁", "邓", "许", "傅", "沈", "曾", "彭", "吕",
            "苏", "卢", "蒋", "蔡", "贾", "丁", "魏", "薛", "叶", "阎",
            "余", "潘", "杜", "戴", "夏", "钟", "汪", "田", "任", "姜",
            "范", "方", "石", "姚", "谭", "廖", "邹", "熊", "金", "陆",
            "郝", "孔", "白", "崔", "康", "毛", "邱", "秦", "江", "史",
            "顾", "侯", "邵", "孟", "龙", "万", "段", "雷", "钱", "汤",
            "尹", "黎", "易", "常", "武", "乔", "贺", "赖", "龚", "文"
    );

    /**
     * 生成随机中文姓名
     */
    public static String generate() {
        // 随机姓氏
        String lastName = RandomUtil.randomEle(LASTNAMES);
        String firstName = generateFirstName();
        return lastName + firstName;
    }

    /**
     * 生成指定姓氏的随机名字
     */
    public static String generate(String lastName) {
        String firstName = generateFirstName();
        return lastName + firstName;
    }

    /**
     * 生成随机名字
     */
    public static String generateFirstName() {
        int i = RandomUtil.randomInt(1, 3);
        StringBuilder firstName = new StringBuilder();
        for (int j = 0; j < i; j++) {
            firstName.append(RandomUtil.randomChinese());
        }
        return firstName.toString();
    }
}